#pragma once

#include <iostream>

using namespace std;

namespace aj
{
	class string
	{
	public:
		string(const char* str = "")
		{
			int len = strlen(str);
			_str = new char[len + 1];
			strcpy(_str, str);
		}

		string(const string& s)
		{
			int len = strlen(s._str);
			_str = new char[len + 1];
			strcpy(_str, s._str);
		}

		string& operator=(const string& s)
		{
			int len = strlen(s._str);
			string tmp(s);
			strcpy(tmp._str, s._str);
			swap(tmp._str, _str);

			return *this;
		}

		~string()
		{
			delete[] _str;
			_str = nullptr;
		}

		char* C_str()
		{
			return _str;
		}

	private:
		char* _str;
	};
}

void test_string()
{
	aj::string s1("I Love You");
	cout << s1.C_str() << endl;

	aj::string s2(s1);
	cout << s2.C_str() << endl;

	aj::string s3("chineseperson");
	cout << s3.C_str() << endl;

	s2 = s3;
	cout << s2.C_str() << endl;

}